СПИСОК БИЛЕТОВ 1. Понятие "парадигма программирования" и его история. Взаимосвязь языков программирования и парадигм программирования. 2. Рекурсия. Виды рекурсии. Примеры. 3. Остаточная (хвостовая) рекурсия. 4. Императивное и императивно-процедурное программирование: ключевые понятия. 5. Язык Лисп. Понятие S-выражения. 6. Язык Лисп. Функции высоких порядков, мапперы. 7. Язык Лисп. Лексическое и динамическое связывание. Лексические замыкания. 8. Функция REDUCE и примеры её использования. 9. Понятие функционального программирования. Ключевые особенности и термины. 10. Основные понятия языка Пролог: атом, терм, предикат, переменная. Сопоставление (унификация). 11. Выполнение программы на Прологе. Декларативная и процедурная семантика. Отрицание и отсечение. 12. Инвертирование предикатов в Прологе. Причины, по которым инвертирование может не работать. 13. Логическое программирование и базы данных. Понятие декларативного программирования. 14. Основы языка Рефал. Ситуационное программирование. Поиск с возвратами в Рефале-5. 15. Понятие ленивых вычислений. Достоинства и недостатки. 16. Основы языка Hope. 17. Обработка потенциально бесконечных структур данных с помощью ленивых вычислений. 18. Командно-скриптовые языки программирования и их ключевые особенности. 19. "Текст" как универсальное представление. 20. Основы объектно-ориентированного программирования. Понятие класса как множества. 21. Наследование в ООП. Наследование как сужение множества. Виртуальные методы. 22. Полиморфизм, его теоретико-множественное и техническое описание. 23. Обобщенное программирование. 24. Обработка исключительных ситуаций и её связь с основными стилями программирования. 25. Событийно-ориентированное программирование. 26. Основные методы многостилевой (мультипарадигмальной) интеграции.